import request from '@/utils/request'

// 留言数据类型定义
export interface Message {
  id: number
  liked: boolean
  name: string
  email?: string
  content: string
  createdAt: string
}

// 分页查询参数
export interface MessageQueryParams {
  page?: number
  pageSize?: number
}

// 分页响应
export interface PageResult<T> {
  list: T[]
  total: number
  page: number
  pageSize: number
}

/**
 * 获取留言列表
 * @param params 查询参数
 * @returns 留言列表
 */
export const getMessages = async (params?: MessageQueryParams): Promise<PageResult<Message>> => {
  try {
    // 在实际项目中，这里会调用真实的API
    // const res = await request.get('/api/messages', { params })
    // return res.data

    // 模拟API响应
    const mockMessages: Message[] = [
      {
        id: 1,
        name: '张三',
        liked: true,
        email: 'zhangsan@example.com',
        content: '这个网站看起来很棒！我很喜欢这里的内容，希望以后能看到更多优质的文章。',
        createdAt: '2024-01-20 14:30:00'
      },
      {
        id: 2,
        name: '李四',
        liked: false,
        content: '界面设计很清爽，用户体验也很好。提个小建议，希望能增加更多的分类标签。',
        createdAt: '2024-01-19 10:15:00'
      },
      {
        id: 3,
        name: '王五',
        liked: true,
        email: 'wangwu@example.com',
        content: '文章质量很高，学到了很多知识。期待后续更新！',
        createdAt: '2024-01-18 16:45:00'
      },
      {
        id: 4,
        name: '赵六',
        liked: false,
        content: '网站加载速度很快，点赞！',
        createdAt: '2024-01-17 09:20:00'
      }
    ]

    // 模拟分页
    const page = params?.page || 1
    const pageSize = params?.pageSize || 10
    const start = (page - 1) * pageSize
    const end = start + pageSize
    const paginatedMessages = mockMessages.slice(start, end)

    return {
      list: paginatedMessages,
      total: mockMessages.length,
      page,
      pageSize
    }
  } catch (error) {
    console.error('获取留言列表失败:', error)
    throw error
  }
}

/**
 * 提交新留言
 * @param message 留言数据
 * @returns 创建的留言
 */
export const createMessage = async (
  message: Omit<Message, 'id' | 'createdAt'>
): Promise<Message> => {
  try {
    // 在实际项目中，这里会调用真实的API
    // const res = await request.post('/api/messages', message)
    // return res.data

    // 模拟API响应
    return {
      id: Date.now(),
      ...message,
      createdAt: new Date().toISOString().replace('T', ' ').substring(0, 19)
    }
  } catch (error) {
    console.error('提交留言失败:', error)
    throw error
  }
}

/**
 * 删除留言
 * @param id 留言ID
 * @returns 是否删除成功
 */
export const deleteMessage = async (id: number): Promise<boolean> => {
  try {
    // 在实际项目中，这里会调用真实的API
    // const res = await request.delete(`/api/messages/${id}`)
    // return res.success

    // 模拟API响应
    return true
  } catch (error) {
    console.error('删除留言失败:', error)
    throw error
  }
}

/**
 * 获取留言详情
 * @param id 留言ID
 * @returns 留言详情
 */
export const getMessageDetail = async (id: number): Promise<Message> => {
  try {
    // 在实际项目中，这里会调用真实的API
    // const res = await request.get(`/api/messages/${id}`)
    // return res.data

    // 模拟API响应
    return {
      id,
      name: '张三',
      email: 'zhangsan@example.com',
      content: '这个网站看起来很棒！我很喜欢这里的内容，希望以后能看到更多优质的文章。',
      createdAt: '2024-01-20 14:30:00'
    }
  } catch (error) {
    console.error('获取留言详情失败:', error)
    throw error
  }
}
